package com.fortune.app.fragments;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.RadioGroup;
import android.widget.TextView;
import androidx.fragment.app.Fragment;
import androidx.cardview.widget.CardView;

import com.fortune.app.R;
import com.fortune.app.activities.ZhouYiActivity;
import com.fortune.app.activities.TarotActivity;
import com.fortune.app.activities.ZodiacActivity;
import com.fortune.app.FortuneApplication;

import java.util.Date;

/**
 * 占卜Fragment，提供各种占卜功能入口
 */
public class DivinationFragment extends Fragment {
    private CardView cardZhouYi;
    private CardView cardTarot;
    private CardView cardZodiac;
    private RadioGroup rgQuestionType;
    private Button btnStartDivination;
    private TextView tvDivinationIntro;
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_divination, container, false);
        
        // 初始化视图
        cardZhouYi = view.findViewById(R.id.card_zhouyi);
        cardTarot = view.findViewById(R.id.card_tarot);
        cardZodiac = view.findViewById(R.id.card_zodiac);
        rgQuestionType = view.findViewById(R.id.rg_question_type);
        btnStartDivination = view.findViewById(R.id.btn_start_divination);
        tvDivinationIntro = view.findViewById(R.id.tv_divination_intro);
        
        // 设置卡片点击事件
        setupCardClickListeners();
        
        // 设置问题类型选择监听
        rgQuestionType.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                updateDivinationIntro(checkedId);
            }
        });
        
        // 设置开始占卜按钮点击事件
        btnStartDivination.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startDivination();
            }
        });
        
        return view;
    }
    
    /**
     * 设置卡片点击事件
     */
    private void setupCardClickListeners() {
        cardZhouYi.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 高亮选中的卡片
                highlightCard(cardZhouYi);
                // 更新介绍文本
                tvDivinationIntro.setText("周易八卦是中国古代的一种占卜方式，通过卦象的变化来预测未来和解读命运。选择您关心的问题类型，我们将为您生成详细的卦象解读。");
                // 显示问题类型选择和开始按钮
                rgQuestionType.setVisibility(View.VISIBLE);
                btnStartDivination.setVisibility(View.VISIBLE);
                btnStartDivination.setText("开始八卦占卜");
            }
        });
        
        cardTarot.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 高亮选中的卡片
                highlightCard(cardTarot);
                // 更新介绍文本
                tvDivinationIntro.setText("塔罗牌是一种古老的占卜工具，通过牌面的组合来揭示潜在的问题和可能的未来。选择您关心的问题类型，我们将为您抽取塔罗牌并进行解读。");
                // 显示问题类型选择和开始按钮
                rgQuestionType.setVisibility(View.VISIBLE);
                btnStartDivination.setVisibility(View.VISIBLE);
                btnStartDivination.setText("开始塔罗占卜");
            }
        });
        
        cardZodiac.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 高亮选中的卡片
                highlightCard(cardZodiac);
                // 更新介绍文本
                tvDivinationIntro.setText("星座运势基于天体的位置和运动，为您提供个性化的运势预测。我们将根据您的生日和当前星象，为您生成详细的星座运势报告。");
                // 隐藏问题类型选择，直接显示开始按钮
                rgQuestionType.setVisibility(View.GONE);
                btnStartDivination.setVisibility(View.VISIBLE);
                btnStartDivination.setText("查看星座运势");
            }
        });
    }
    
    /**
     * 高亮选中的卡片
     */
    private void highlightCard(CardView selectedCard) {
        // 重置所有卡片样式
        cardZhouYi.setCardBackgroundColor(getResources().getColor(R.color.card_normal));
        cardTarot.setCardBackgroundColor(getResources().getColor(R.color.card_normal));
        cardZodiac.setCardBackgroundColor(getResources().getColor(R.color.card_normal));
        
        // 高亮选中的卡片
        selectedCard.setCardBackgroundColor(getResources().getColor(R.color.card_selected));
    }
    
    /**
     * 根据选择的问题类型更新介绍文本
     */
    private void updateDivinationIntro(int checkedId) {
        String introText = tvDivinationIntro.getText().toString();
        
        if (checkedId == R.id.rb_career) {
            introText += "\n\n事业问题将关注您的职业发展、工作环境和未来机遇。";
        } else if (checkedId == R.id.rb_love) {
            introText += "\n\n感情问题将关注您的情感状态、人际关系和潜在的爱情发展。";
        } else if (checkedId == R.id.rb_health) {
            introText += "\n\n健康问题将关注您的身体状况、精神状态和潜在的健康风险。";
        } else if (checkedId == R.id.rb_wealth) {
            introText += "\n\n财富问题将关注您的财务状况、投资机会和未来的财富走向。";
        }
        
        tvDivinationIntro.setText(introText);
    }
    
    /**
     * 开始占卜
     */
    private void startDivination() {
        // 获取用户信息
        FortuneApplication app = FortuneApplication.getInstance();
        if (!app.isUserInfoSet()) {
            // 如果用户信息未设置，提示用户先设置个人信息
            showUserInfoRequiredDialog();
            return;
        }
        
        // 获取选中的占卜类型
        String divinationType = "";
        if (cardZhouYi.getCardBackgroundColor().getDefaultColor() == getResources().getColor(R.color.card_selected)) {
            divinationType = "zhouyi";
        } else if (cardTarot.getCardBackgroundColor().getDefaultColor() == getResources().getColor(R.color.card_selected)) {
            divinationType = "tarot";
        } else if (cardZodiac.getCardBackgroundColor().getDefaultColor() == getResources().getColor(R.color.card_selected)) {
            divinationType = "zodiac";
        }
        
        // 获取选中的问题类型
        String questionType = "";
        if (rgQuestionType.getVisibility() == View.VISIBLE) {
            int checkedId = rgQuestionType.getCheckedRadioButtonId();
            if (checkedId == R.id.rb_career) {
                questionType = "事业";
            } else if (checkedId == R.id.rb_love) {
                questionType = "爱情";
            } else if (checkedId == R.id.rb_health) {
                questionType = "健康";
            } else if (checkedId == R.id.rb_wealth) {
                questionType = "财富";
            }
        }
        
        // 根据占卜类型启动相应的活动
        if (divinationType.equals("zhouyi")) {
            Intent intent = new Intent(getActivity(), ZhouYiActivity.class);
            intent.putExtra("question_type", questionType);
            startActivity(intent);
        } else if (divinationType.equals("tarot")) {
            Intent intent = new Intent(getActivity(), TarotActivity.class);
            intent.putExtra("question_type", questionType);
            startActivity(intent);
        } else if (divinationType.equals("zodiac")) {
            startActivity(new Intent(getActivity(), ZodiacActivity.class));
        }
    }
    
    /**
     * 显示用户信息必填对话框
     */
    private void showUserInfoRequiredDialog() {
        new AlertDialog.Builder(getActivity())
                .setTitle("需要个人信息")
                .setMessage("占卜需要您的生日等个人信息。请先在个人资料页面设置您的信息。")
                .setPositiveButton("去设置", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // 切换到个人资料页面
                        ((MainActivity)getActivity()).switchToProfileFragment();
                    }
                })
                .setNegativeButton("取消", null)
                .show();
    }
}
